home *** CD-ROM | disk | FTP | other *** search
- #include <WM.h>
- #include <MS.h>
- #include <MyStructs.h>
-
- USHORT MakeSource()
- {
- USHORT quit=FALSE,OK=FALSE;
- ScreenToFront(WMsc);
- for(j=0; j<7; j++)
- {
- MSGad[j].Flags=NULL;
- if(Erlaubt & Potenz[j]) MSGad[j].Flags=SELECTED;
- }
- HEADERInfo.DispPos=0;
- MSWindow.Screen=WMsc;
- if(!(Wwin=(struct Window *)OpenWindow(&MSWindow))) return(1);
- Wrp=Wwin->RPort;
- WinBorder(Wwin);
- PrintIText(Wrp,&MSText[9],0,0);
- i=6;
- if(CodeArt) i=110;
- SetDrMd(Wrp,JAM1|COMPLEMENT);
- RectFill(Wrp,i,80,i+97,93);
-
- do
- {
- Wait(1L << Wwin->UserPort->mp_SigBit);
- GetMessage(Wwin);
- switch(class)
- {
- case GADGETDOWN:
- if(Id==9)
- {
- if(CodeArt)
- {
- MarkMode();
- CodeArt=0;
- }
- break;
- }
- if(Id==10)
- {
- if(CodeArt==0)
- {
- MarkMode();
- CodeArt=1;
- }
- break;
- }
- break;
- case GADGETUP:
- switch(Id)
- {
- case 0: quit=TRUE;
- break;
-
- /* File-Name */
- case 11: break;
- case 12: OK=TRUE;
- quit=TRUE;
- break;
- } /* switch Id */
- if(Id>0 && Id<8)
- Erlaubt^=Potenz[Id-1];
- break;
- } /* switch class */
- } while(quit==FALSE); /* do */
- CloseWindow(Wwin);
- if(OK==TRUE)
- {
- if(strlen(HEADERBuff)>0 && Erlaubt >0 )
- {
- Work();
- if(WriteSource())
- {
- if(Datei) Close(Datei);
- Datei=NULL;
- Ready();
- Error(1,0,1);
- }
- else Ready();
- }
- }
- ScreenToFront(sc);
- return(0);
- }
- VOID MarkMode()
- {
- SetDrMd(Wrp,JAM1|COMPLEMENT);
- RectFill(Wrp,110,80,207,93);
- RectFill(Wrp,6,80,103,93);
- }
- USHORT WriteSource()
- {
- for(i=0; i<32; i++) ZS[i]=0;
- SC=0;
- WI=0;
- TX=0;
- TXL=0;
- ZSN=0;
- GD=0;
- BO=0;
- IM=0;
- MU=0;
- MI=0;
- SU=0;
- GDL=0;
- BOL=0;
- IML=0;
- MUL=0;
- RQ=0;
- RSQ=0;
- AL=0;
- BM=0;
- PT=0;
- NT=0;
- SType=0;
- CodeSize=0;
- if(!(Datei=Open(HEADERBuff,MODE_NEWFILE))) return(1);
- strcpy(Buffer,"");
- Undo=0;
- CheckUndo(noscW);
- if(firstS)
- {
- helpS=firstS;
- while(helpS)
- {
- if(helpS->FirstWindow) CheckUndo(helpS->FirstWindow);
- helpS=helpS->NextScreen;
- }
- }
- /************************************************************************
- * C und Assembler --- UNDOBUFFER --- *
- ************************************************************************/
- if(Undo)
- {
- StrEnd=1;
- if(CodeArt==0) sprintf(Buffer,"%s",CType[3]);
- InBuff(GACTIV1[13]);
- if(CodeArt)
- {
- DPunkt();
- AssT(4);
- sprintf(LEER,"%d%s%s%s",Undo,ZCode[0],ZCode[1],
- AType[3]);
- }
- else sprintf(LEER,"[%d];",Undo);
- BuffLeer();
- if(DSave()) return(1);
- }
- helpW=noscW;
- if(helpW!=NULL && (Erlaubt & 64)!=0)
- {
- if(PaletteSource(WMColors,4)) return(1);
- }
- if(WindowSource()) return(1);
- helpS=firstS;
- while(helpS)
- {
- SType=0;
- if((helpS->Type & 15)==15) SType++;
- if(CodeArt)
- {
- if(ScreenSource()) return(1);
- }
- if(helpS->FirstWindow)
- {
- helpW=helpS->FirstWindow;
- if(WindowSource()) return(1);
- }
- if(CodeArt==0)
- {
- if(ScreenSource()) return(1);
- }
- helpS=helpS->NextScreen;
- }
- if(CodeArt) InBuff("; ");
- else InBuff("/* ");
- InBuff("Ende der Window-Maschine Strukturen");
- if(CodeArt==0) InBuff(" */");
- InBuff("\n\n");
- if(Save()) return(1);
- Close(Datei);
- Datei=NULL;
- return(0);
- }
-
- VOID CheckUndo(struct MyWindow *w)
- {
- while(w)
- {
- if(w->FirstGadget)
- {
- helpG=w->FirstGadget;
- while(helpG)
- {
- if(helpG->MaxChars > Undo && helpG->Border != 2)
- Undo=helpG->MaxChars;
- helpG=helpG->NextGadget;
- }
- }
- w=w->NextWindow;
- }
- }
-
- USHORT ScreenSource()
- {
- SC++;
- if(Erlaubt & 64)
- {
- if(PaletteSource(helpS->ColorMap,helpS->Colors))
- return(1);
- }
- if((Erlaubt & 1)==0) return(0);
- i=0;
- if(helpS->Font==2) i++;
- if(helpS->Font>0 && ZS[i*16] == 0)
- if(FontSource(helpS->Font,0)) return(1);
- StrEnd=0;
- if(CodeArt==0)
- {
- sprintf(Buffer,"%s%s ",STR,String[2]);
- }
- MakeName(helpS->Name,SC,2);
- if(CStart()) return(1);
- if(Word(helpS->LeftEdge,helpS->TopEdge)) return(1);
- if(Word(helpS->Width,helpS->Height)) return(1);
- AssT(1);
- sprintf(LEER,"%d",helpS->Depth);
- if(BuffKom()) return(1);
- if(Byte(helpS->DetailPen,helpS->BlockPen)) return(1);
- AssT(1);
- j=0;
- for(i=0; i<7; i++)
- {
- if(helpS->ViewModes & SVIEWS[i])
- {
- Plus();
- if(CodeArt) InBuff("V_");
- InBuff(SVIEWS1[i]);
- }
- }
- if(j)
- {
- if(KomTab()) return(1);
- }
- else if(Null(1)) return(1);
- AssT(1);
- if((helpS->Type & 15) == 15) InBuff(SFLAGS1[1]);
- else InBuff(SFLAGS1[0]);
- j=1;
- for(i=2; i<5; i++)
- {
- if(helpS->Type & SFLAGS[i])
- {
- Plus();
- InBuff(SFLAGS1[i]);
- }
- }
- if(KomTab()) return(1);
- if(helpS->Font)
- {
- AssT(2);
- KUnd();
- sprintf(LEER,"ZS%d_0",helpS->Font);
- if(BuffKom()) return(1);
- }
- else if(Null(1)) return(1);
- if(strlen(helpS->Title))
- {
- AssT(2);
- if(CodeArt)
- {
- MakeName(helpS->Name,SC,2);
- InBuff(String[7]);
- }
- else
- {
- if(Compiler) InBuff(CType[2]);
- SetByte(helpS->Title);
- }
- if(KomTab()) return(1);
- }
- else if(Null(1)) return(1);
- if(strlen(helpS->Gadgets))
- {
- AssT(2);
- KUnd();
- sprintf(LEER,"%s",helpS->Gadgets);
- if(BuffKom()) return(1);
- }
- else if(Null(1)) return(1);
- if(strlen(helpS->BitMap))
- {
- AssT(2);
- KUnd();
- sprintf(LEER,"%s",helpS->BitMap);
- BuffLeer();
- if(LSave()) return(1);
- }
- else if(Null(0)) return(1);
- if(CodeArt)
- {
- if(strlen(helpS->Title))
- {
- MakeName(helpS->Name,SC,2);
- InBuff(String[7]);
- Tab();
- AssT(0);
- SetByte(helpS->Title);
- KommaNull(3);
- }
- }
- else CEnde();
- if(DSave()) return(1);
- return(0);
- }
-
- USHORT ExtraWin()
- {
- if(helpW->CheckMark && CodeArt==1)
- {
- if(ImageSource(helpW->CheckMark,0)) return(1);
- }
- if(helpW->FirstGadget)
- {
- helpG=helpW->FirstGadget;
- if(GadgetSource()) return(1);
- }
- if(helpW->FirstText != NULL && (Erlaubt & 4) == 4)
- {
- TXL++;
- if(TextSource(helpW->FirstText,1)==1) return(1);
- if(CodeArt==0)
- {
- sprintf(Buffer,"%s%s%s%d I%s%d",String[6],
- String[4],String[5],TXL,String[4],TX);
- if(DSave()) return(1);
- }
- }
- if(helpW->MenuStrip)
- {
- if(MenuSource()) return(1);
- }
- if(helpW->CheckMark && CodeArt==0)
- {
- if(ImageSource(helpW->CheckMark,0)) return(1);
- }
- return(0);
- }
- USHORT WindowSource()
- {
- while(helpW)
- {
- if(helpW->FirstRequest)
- {
- if(RequestSource()) return(1);
- }
- else
- {
- if(CodeArt==0)
- {
- if(ExtraWin()) return(1);
- }
- if((Erlaubt & 2)==0)
- {
- if(CodeArt)
- {
- if(ExtraWin())
- return(1);
- }
- }
- else
- {
- WI++;
- StrEnd=0;
- if(CodeArt==0)
- {
- sprintf(Buffer,"%s%s ",STR,String[1]);
- }
- MakeName(helpW->Name,WI,1);
- if(CStart()) return(1);
- if(WindowPos()) return(1);
- StrEnd=1;
- if(Byte(helpW->DetailPen,helpW->BlockPen)) return(1);
- AssT(2);
- j=0;
- for(i=0; i<23; i++)
- {
- if(helpW->IDCMPFlags & WIDCMP[i]) PIDCMP();
- }
- if(j)
- {
- if(KomTab()) return(1);
- }
- else if(Null(1)) return(1);
- StrEnd=0;
- AssT(2);
- j=0;
- if((helpW->Flags & 0x00c0)==0)
- {
- InBuff(WFLAGS1[0]);
- j=1;
- }
- for(i=0; i<16; i++)
- {
- if(helpW->Flags & WFLAGS[i])
- {
- Plus();
- InBuff(WFLAGS1[i]);
- }
- }
- if(j)
- {
- if(KomTab()) return(1);
- }
- else if(Null(1)) return(1);
- if(GadgetZeiger()) return(1);
- if(helpW->CheckMark)
- {
- AssT(2);
- KUnd();
- i=IM;
- if(CodeArt) i++;
- InLeer(10,i);
- if(BuffKom()) return(1);
- }
- else if(Null(1)) return(1);
- if(strlen(helpW->Title))
- {
- AssT(2);
- if(CodeArt)
- {
- MakeName(helpW->Name,WI,1);
- InBuff(String[7]);
- }
- else
- {
- if(Compiler) InBuff(CType[2]);
- SetByte(helpW->Title);
- }
- if(KomTab()) return(1);
- }
- else if(Null(1)) return(1);
- if(Null(1)) return(1);
- if(Null(1)) return(1);
- if(Word(helpW->MinWidth,helpW->MinHeight)) return(1);
- if(Word(helpW->MaxWidth,helpW->MaxHeight)) return(1);
- AssT(1);
- InBuff(SFLAGS1[SType]);
- if(LSave()) return(1);
- if(CodeArt)
- {
- if(strlen(helpW->Title))
- {
- MakeName(helpW->Name,WI,1);
- InBuff(String[7]);
- Tab();
- AssT(0);
- SetByte(helpW->Title);
- KommaNull(3);
- if(DSave()) return(1);
- }
- else if(LSave()) return(1);
- if(ExtraWin()) return(1);
- }
- else
- {
- CEnde();
- if(DSave()) return(1);
- }
- }
- }
- helpW=helpW->NextWindow;
- }
- return(0);
- }
-
- USHORT TFontSource()
- {
- i=0;
- if(helpT->Font==2) i++;
- if(helpT->Font>0 && ZS[(i*16)+helpT->Style] == 0)
- if(FontSource(helpT->Font,helpT->Style)) return(1);
- return(0);
- }
- USHORT TextSource(struct MyText *t,UBYTE mo)
- {
- if(mo)
- {
- if((Erlaubt & 4)==0) return(2);
- }
- helpT=t;
- if(CodeArt==0)
- {
- while(helpT->NextText)
- helpT=helpT->NextText;
- }
- while(helpT)
- {
- TX++;
- if(CodeArt==0)
- {
- if(TFontSource()) return(1);
- }
- StrEnd=0;
- if(CodeArt==1 && mo==1)
- {
- if(helpT==t)
- {
- sprintf(Buffer,"%s%s%d:",String[4],String[5],TXL);
- if(LSave()) return(1);
- }
- }
- if(CodeArt==0)
- {
- sprintf(Buffer,"%s%s%s ",STR,String[3],String[4]);
- }
- sprintf(LEER,"I%s%d",String[4],TX);
- BuffLeer();
- if(CStart()) return(1);
- if(Byte(helpT->FrontPen,helpT->BackPen)) return(1);
- AssT(0);
- j=0;
- for(i=1; i<4; i++)
- {
- if(helpT->DrawMode & DMode[i])
- {
- Plus();
- if(CodeArt) InBuff("RP_");
- InBuff(DRAW[i]);
- }
- }
- if(j==0)
- {
- if(CodeArt) InBuff("RP_");
- InBuff(DRAW[0]);
- }
- SetKomma();
- if(CodeArt) Nuller(0);
- Tab();
- if(Save()) return(1);
- if(Word(helpT->LeftEdge,helpT->TopEdge));
- if(helpT->Font)
- {
- AssT(2);
- KUnd();
- sprintf(LEER,"ZS%d_%d",helpT->Font,helpT->Style);
- if(BuffKom()) return(1);
- }
- else if(Null(1)) return(1);
- AssT(2);
- if(CodeArt)
- {
- sprintf(LEER,"I%s%s%d",String[4],String[4],TX);
- BuffLeer();
- }
- else
- {
- if(Compiler) InBuff(CType[2]);
- SetByte(helpT->IText);
- }
- if(KomTab()) return(1);
- if(helpT->NextText)
- {
- AssT(2);
- KUnd();
- i=TX-1;
- if(CodeArt) i += 2;
- sprintf(LEER,"I%s%d",String[4],i);
- BuffLeer();
- if(LSave()) return(1);
- }
- else if(Null(0)) return(1);
- if(CodeArt)
- {
- sprintf(Buffer,"I%s%s%d:",String[4],String[4],TX);
- Tab();
- AssT(0);
- SetByte(helpT->IText);
- KommaNull(1);
- AssT(3);
- }
- else CEnde();
- if(DSave()) return(1);
- if(CodeArt)
- {
- if(TFontSource()) return(1);
- helpT=helpT->NextText;
- }
- else helpT=helpT->Parent;
- }
- return(0);
- }
- USHORT FontSource(UBYTE fo,UBYTE s)
- {
- i=fo-1;
- ZS[(i*16)+s]=1;
- StrEnd=0;
- if(CodeArt==0)
- {
- sprintf(Buffer,"%s%sAttr ",STR,String[4]);
- }
- sprintf(LEER,"ZS%d_%d",fo,s);
- BuffLeer();
- if(CStart()) return(1);
- AssT(2);
- if(CodeArt) InBuff(DEFS[10]);
- else
- {
- InBuff(CType[0]);
- SetByte(FontName);
- Komma();
- }
- Tab();
- if(Save()) return(1);
- AssT(1);
- if(i) InBuff("TOPAZ_SIXTY");
- else InBuff(FONT[1]);
- if(KomTab()) return(1);
- AssT(0);
- j=0;
- for(i=0; i<4; i++)
- {
- if(s & FStyle[i+1])
- {
- Plus();
- InBuff(FStyle1[i+1]);
- }
- }
- if(j==0) Nuller(0);
- if(KomTab()) return(1);
- AssT(0);
- Nuller(0);
- LineFeed();
- if(CodeArt)
- {
- if(ZSN==0)
- {
- ZSN=1;
- InBuff(DEFS[10]);
- DPunkt();
- InBuff(AType[0]);
- HTab();
- SetByte(FontName);
- KommaNull(3);
- }
- }
- else CEnde();
- if(DSave()) return(1);
- return(0);
- }
- VOID DoubleFeed()
- {
- LineFeed();
- if(CodeArt==1 || (CodeArt==0 && Kompact==1) || StrEnd==1)
- LineFeed();
- }
- VOID LineFeed()
- {
- UBYTE LOK=1;
- if(CodeArt==0 && Kompact==0 && StrEnd==0) LOK=0;
- if(LOK) InBuff(ZCode[0]);
- }
- VOID Tab()
- {
- LineFeed();
- HTab();
- }
- VOID HTab()
- {
- UBYTE LOK=1;
- if(CodeArt==0 && Kompact==0 && StrEnd==0) LOK=0;
- if(LOK) InBuff(ZCode[1]);
- }
- VOID AssT(UBYTE n)
- {
- if(CodeArt)
- {
- InBuff(AType[n]);
- HTab();
- }
- }
- USHORT Word(SHORT w1,SHORT w2)
- {
- AssT(1);
- sprintf(LEER,"%d,%d",w1,w2);
- if(BuffKom()) return(1);
- return(0);
- }
- USHORT Byte(BYTE b1,BYTE b2)
- {
- AssT(0);
- sprintf(LEER,"%d,%d",b1,b2);
- if(BuffKom()) return(1);
- return(0);
- }
- USHORT Null(UBYTE k)
- {
- AssT(2);
- SetNull();
- if(k) Komma();
- if(k) Tab();
- else LineFeed();
- if(Save()) return(1);
- return(0);
- }
- VOID SetNull()
- {
- if(CodeArt) Nuller(0);
- else InBuff(ZCode[7]);
- }
- VOID Komma()
- {
- if(CodeArt==0) SetKomma();
- }
-
- USHORT KomTab()
- {
- Komma();
- Tab();
- if(Save()) return(1);
- return(0);
- }
-
- USHORT Save()
- {
- time=0;
- if(CodeArt==0 && Kompact==0 && StrEnd==0)
- {
- CodeSize+=strlen(Buffer);
- if(CodeSize >= 65)
- {
- CodeSize=0;
- InBuff(ZCode[0]);
- InBuff(ZCode[1]);
- }
- }
- else CodeSize=0;
- if(write=Write(Datei,Buffer,strlen(Buffer)) != strlen(Buffer))
- time++;
- strcpy(Buffer,"");
- return(time);
- }
-
- USHORT PaletteSource(USHORT *map,USHORT anz)
- {
- UBYTE line=0;
- USHORT n=0;
- StrEnd=1;
- if(CodeArt==0) sprintf(LEER,"%s%s%d[]",CType[5],String[19],SC);
- else InLeer(19,SC);
- BuffLeer();
- if(CStart()) return(1);
- AssT(1);
- while(n < anz)
- {
- HexCode(map[n]);
- line++;
- n++;
- if(line==8)
- {
- if(n < anz)
- {
- if(KomTab()) return(1);
- AssT(1);
- line=0;
- }
- }
- else
- {
- if(n < anz) SetKomma();
- }
- }
- if(CodeArt==0)
- {
- LineFeed();
- CEnde();
- DoubleFeed();
- InBuff(String[6]);
- }
- else DoubleFeed();
- InBuff("ANZAHL_FARBEN");
- if(CodeArt) sprintf(LEER,"%d: %s %d",SC,ZCode[5],anz);
- else sprintf(LEER,"%d %d",SC,anz);
- BuffLeer();
- if(DSave()) return(1);
- return(0);
- }
-
- VOID HexCode(USHORT zahl)
- {
- strcpy(LEER,"0x0000");
- i=2;
- if(CodeArt)
- {
- strcpy(LEER,"$0000");
- i=1;
- }
- LEER[i]=Hex[(zahl & 0xF000) >> 12];
- LEER[i+1]=Hex[(zahl & 0x0F00) >> 8];
- LEER[i+2]=Hex[(zahl & 0x00F0) >> 4];
- LEER[i+3]=Hex[zahl & 15];
- BuffLeer();
- }
- VOID BuffLeer()
- {
- InBuff(LEER);
- }
-